//
//  UIDevice+Device.h
//  PracticeProject
//
//  Created by PacteraLF on 2017/6/12.
//  Copyright © 2017年 PacteraLF. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef enum : NSUInteger {
    CurrentDeviceTypeNone,              // 未知类型
    CurrentDeviceTypeIPhone,            // 手机
    CurrentDeviceTypeIPad,              // pad
    CurrentDeviceTypeIPod,              // pod
    CurrentDeviceTypeIPhoneSimulator    // 模拟器
} CurrentDeviceType;

@interface UIDevice (Device)

/**
 获取当前的APP的运行的手机系统版本号
 e.g. @"9.3.5"
 */
+ (NSString *)getOSVersion;

/**
 获取当前的APP的运行的手机类型名称
 e.g. @"iPhone", @"iPod touch"
 */
+ (NSString *)getOSModel;

/**
 获取当前的APP的运行的手机系统名称(这个感觉有点鸡肋)
 e.g. @"iOS"
 */
+ (NSString *)getOSName;


/**
 判断当前设备是不是手机(iPhone)
 */
+ (BOOL)getDeviceIsIPhone;

/**
 判断当前设备是不是IPad
 */
+ (BOOL)getDeviceIsIPad;

/**
 判断当前设备是不是IPod
 */
+ (BOOL)getDeviceIsIPod;


/**
 获取当前设备类型
 */
+ (CurrentDeviceType)getDeviceType;

/**
 *  获取当前应用可用内存(单位：MB）
 *
 *  @return 当前应用可用内存(单位：MB）
 */
+ (double)getMemoryMB;

/**
 获取当前设备的具体型号
 */
+ (NSString *)getDeviceTypeString;


/**
 快速获得当前设备是不是ipad或者iphone
 
 PS:这个后期补充
 */
+ (BOOL)isPad;

/**
 *  获取应用名称
 *
 *  @return 应用名称
 */
+ (NSString *)getAppName;

/**
 *  获取当前时间
 *
 *  @return 当前时间
 */
+(NSString*)getCurrentTimes;

//CPU核心数
+(NSInteger)getCPUNum;
//获取CPU类型
+(NSString *)getCPUType;

#pragma mark sysctl utils
/**
 *  获取系统信息
 *
 *  @param typeSpecifier 信息标识
 *
 *  @return 系统信息
 */
+ (NSUInteger)getSysInfo: (uint) typeSpecifier;
/**
 *  CPU频率
 *
 *  @return CPU频率
 */
+ (NSUInteger)getCpuFrequency;
/**
 *  系统总线频率
 *
 *  @return 系统总线频率
 */
+ (NSUInteger)getBusFrequency;
/**
 *  CPU核心数
 *
 *  @return CPU核心数
 */
+ (NSUInteger)getCpuCount;

//检测是否为模拟器
+ (BOOL)isSimulator;

#pragma mark - 是否被破解
+ (BOOL)isJailbreak;
//检测是否设置代理
+ (BOOL)getProxyStatus;

//获取是否开启vpn  iPhone X以前的机器可用
+ (BOOL)isVPNConnected;

#pragma mark - 获取当前网络状态
+(NSString *)getNetWorkInfo;
#pragma mark - 获取屏幕分辨率
+(NSString *)getScreenSize;
#pragma mark - 获取操作系统版本
+(NSString *)getSystemVersion;
#pragma mark - 获取操作wifiSsid
+ (NSString *)wifiSsid;
#pragma mark - 获取运营商
+ (NSString *)getCarrierInfo;
#pragma mark - 获取设备当前网络IP地址
+ (NSString *)getIPAddress:(BOOL)preferIPv4;
+ (BOOL)isValidatIP:(NSString *)ipAddress;
+ (NSDictionary *)getIPAddresses;


@end
